﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

using Biblioteca.Model;


namespace Biblioteca.Repositorio
{
    class RepositorioRepresentada
    {
        public SqlConnection sqlConn;

        string caminhoSQL = @"Data Source=.\SQL2008Express;Initial Catalog=vendamais;UId=sa;Password=12345;";
       // string caminhoSQL = @"Data Source=PC-VALENTINA\SQLEXPRESS;Initial Catalog=vendamais;UId=teste;Password=123;";

        public void abrirConexao()
        {
            try
            {
                this.sqlConn = new SqlConnection(caminhoSQL);
                this.sqlConn.Open();
            }
            catch (Exception erro)
            {
                throw erro;
            }
        }

        public void fecharConexao()
        {
            sqlConn.Close();
            sqlConn.Dispose();
        }

        public List<Representada> listar_Representada()
        {
            List<Representada> retorno = new List<Representada>();
            try
            {
                this.abrirConexao();
                SqlCommand sql = new SqlCommand("SELECT codRepre,razaoSocial,cnpj,endereco,cidade,uf,contato,telefone FROM representada", sqlConn);
                SqlDataReader dataReader = sql.ExecuteReader();

                while (dataReader.Read())
                {
                    Representada r = new Representada();

                    r.CodRepre = dataReader.GetInt32(dataReader.GetOrdinal("codRepre"));
                    r.RazaoSocial = dataReader.GetString(dataReader.GetOrdinal("razaoSocial"));
                    r.Cnpj = dataReader.GetString(dataReader.GetOrdinal("cnpj"));
                    r.Endereco = dataReader.GetString(dataReader.GetOrdinal("endereco"));
                    r.Cidade = dataReader.GetString(dataReader.GetOrdinal("cidade"));
                    r.Uf = dataReader.GetString(dataReader.GetOrdinal("uf"));
                    r.Contato = dataReader.GetString(dataReader.GetOrdinal("contato"));
                    r.Telefone = dataReader.GetString(dataReader.GetOrdinal("telefone"));

                    retorno.Add(r);
                }
                return retorno;
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                this.fecharConexao();
            }
        }

        public void incluir_Representada(Representada repre)
        {
            try
            {
                this.abrirConexao();
                SqlCommand sql = new SqlCommand("insert into Representada values (@razaoSocial, @cnpj, @endereco, @cidade, @uf, @contato, @telefone)", sqlConn);

                sql.Parameters.AddWithValue("@razaoSocial", repre.RazaoSocial);
                sql.Parameters.AddWithValue("@cnpj", repre.Cnpj);
                sql.Parameters.AddWithValue("@endereco", repre.Endereco);
                sql.Parameters.AddWithValue("@cidade", repre.Cidade);
                sql.Parameters.AddWithValue("@uf", repre.Uf);
                sql.Parameters.AddWithValue("@contato", repre.Contato);
                sql.Parameters.AddWithValue("@telefone", repre.Telefone);

                sql.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {

                this.fecharConexao();
            }
        }


        public void excluir_Representada(Representada repre)
        {
            try
            {
                this.abrirConexao();

                SqlCommand sql = new SqlCommand("delete from Representada where codRepre=@codRepre", sqlConn);
                sql.Parameters.AddWithValue("@codRepre", repre.CodRepre);
                sql.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                this.fecharConexao();
            }
        }
    }
}